#include <iostream>

using namespace std;

int main()
{
    constexpr size_t sz = 5;
    int arr[sz] = {1, 2, 3, 4, 5};
    int *ip = arr;          // 等价于 int *ip = &arr[0]
    int *ip2 = ip + 4;      // ip2 指向 arr 的尾元素 arr[4]

    auto n = end(arr) - begin(arr); // n 的值是 5，也就是 arr 中元素的数量

    int *b = arr, *e = arr + sz;
    while (b < e) {
        // 使用 *b
        ++b;
    }

    // int i = 0;
    // int *p = &i;
    // 未定义的：p 和 e 无关，因此比较毫无意义！
    // while (p < e)

    int last = *(b + 4);    // last = arr[4]
    last = *b + 4;          // last = arr[0] + 4

    int *p = &arr[2];       // p 指向索引为 2 的元素
    int j = p[1];           // j = arr[3]
    int k = p[-2];          // k = arr[0]
}